﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLLTZS.Funcionalidad;
using System.Drawing;
using BLLTZS;
using System.Web.Security;

namespace TZS.Cuentas
{
    public partial class Registrate : FormGenerico
    {
        private void SeleccionarCaptcha()
        {
            BLLCaptcha bll = new BLLCaptcha();
            lblPregunta.Text = bll.TraerCaptchaAleatorio().Pregunta;
        }

        private bool ValidarDatos()
        {
            BLLCaptcha bllCaptcha = new BLLCaptcha();
            BLLUsuario bllUsuario = new BLLUsuario();

            if (!bllCaptcha.Validar(lblPregunta.Text, txtRespuesta.Text))
            {
                lblError.Text = "Respuesta incorrecta de captcha";
                lblPregunta.Text = bllCaptcha.TraerCaptchaAleatorio().Pregunta;
                return false;
            }
            else if (bllUsuario.Existe(txtUsuario.Text))
            {
                lblError.Text = "El nombre de usuario " + txtUsuario.Text + " no está disponible.";
                return false;
            }
            else if (txtUsuario.Text.Length < 5 || txtUsuario.Text.Length > 20 || txtPass.Text.Length < 5 || txtPass.Text.Length > 20
                     || !ValidarTexto(txtUsuario.Text, Properties.Resources.TextboxSeguro) || !ValidarTexto(txtPass.Text, Properties.Resources.TextboxSeguro))
            {
                lblError.Text = "-.-";
                return false;
            }

            return true;
        }


        protected void Page_Load(object sender, EventArgs e)
        {
            if (User.Identity.IsAuthenticated)
                Response.Redirect("/Default.aspx");

            if (!IsPostBack)
            {
                SeleccionarCaptcha();
                lblUsuarioExiste.Visible = pnlErrores.Visible = false;
                fteUsuario.ValidChars = ftePass.ValidChars = Properties.Resources.TextboxSeguro;
            }
        }

        protected void txtUsuario_TextChanged(object sender, EventArgs e)
        {
            BLLUsuario bll = new BLLUsuario();

            if (txtUsuario.Text.Length > 0)
                if (bll.Existe(txtUsuario.Text))
                {
                    txtUsuario.ForeColor = Color.Red;
                    lblUsuarioExiste.Visible = true;
                }
                else
                {
                    txtUsuario.ForeColor = Color.Green;
                    lblUsuarioExiste.Visible = false;
                }
        }

        protected void btnRegistrarse_Click(object sender, EventArgs e)
        {
            pnlErrores.Visible = false;

            if (ValidarDatos())
            {
                TZS_Usuario usuario = new TZS_Usuario();
                usuario.NombreUsuario = txtUsuario.Text;
                usuario.Contraseña = txtPass.Text;

                BLLUsuario bllUsuario = new BLLUsuario();
                bllUsuario.CargarNuevo(usuario);
                bllUsuario.GuardarCambios();

                FormsAuthentication.Initialize();
                FormsAuthenticationTicket fat = new FormsAuthenticationTicket(1, usuario.NombreUsuario, DateTime.Now, DateTime.Now.AddMinutes(30), false, @"", FormsAuthentication.FormsCookiePath);

                Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(fat)));

                Response.Redirect("/Cuentas/MisDatos.aspx");
            }
            else
                pnlErrores.Visible = true;
        }
    }
}